package com.bw.module_motorcircle.test_recyclerview.diffi

import androidx.recyclerview.widget.DiffUtil
import com.bw.module_motorcircle.test_recyclerview.MyModel

/**
 * @author ytx
 * @date 2025-09-24 15:00
 * @description
 */
class MyDiffCallBack(val oldList:List<MyModel>, val newList:List<MyModel>):DiffUtil.Callback() {
    /**
     * 返回旧数据的数量
     */
    override fun getOldListSize(): Int {
        return oldList.size
    }

    /**
     * 返回新数据的数量
     */
    override fun getNewListSize(): Int {
        return newList.size
    }

    /**
     * 对比是不是同一个对象
     */
    override fun areItemsTheSame(p0: Int, p1: Int): Boolean {
        return oldList[p0].id == newList[p1].id
    }

    /**
     * 对比内容是不是一样
     */
    override fun areContentsTheSame(p0: Int, p1: Int): Boolean {
        return oldList[p0] == newList[p1]
    }

    /**
     * 局部增量刷新：同一个对象，但是内容不一样，局部增量刷新
     */
    override fun getChangePayload(oldItemPosition: Int, newItemPosition: Int): Any? {
        val oldItem = oldList[oldItemPosition]
        val newItem = newList[newItemPosition]
        if (oldItem.like != newItem.like){
            return "like"
        }
        if (oldItem.title != newItem.title){
            return "title"
        }
        if (oldItem.url != newItem.url){
            return "url"
        }
        return null
    }
}